<?php

use App\Listeners\Websocket\WebsocketListener;

global $argv;
return [
	// Http 服务
	'http' => [
		'enable' => true,
		// 设置协议
		'name' => 'HttpServer',
		// 设置监听的地址和端口
		'bind_address' => '0.0.0.0:9501',
		// 设置进程数
		'count' => 1,// cpu_count(),
		// 传输协议
		'transport' => 'tcp',
		// 设置用户权限
		'user' => '',
		// 设置用户组权限
		'group' => '',
		// 服用端口
		'reuse_port' => false,
		// 在向子进程发送停止命令stopTimeout秒后，如果进程仍在运行，则强制终止。
		':stop_timeout' => 2,
		// PID 文件
		':pid_file' => storage_path() . '/workerman.pid',
		// 状态文件
		':status_file' => storage_path() . '/workerman.status',
		// 进程输出文件
		':stdout_file' => storage_path('logs') . '/workerman_stdout.log',
		// 日志文件
		':log_file' => storage_path('logs') . '/workerman.log',
		// 事件循环
		':event_loop_class' => '',
		// 最大数据包大小
		'max_package_size' => 10 * 1024 * 1024,
	],

	// Websocket 服务
	'websocket' => [
		'enable' => false,
		// 网关配置
		'gateway' => [
			// 设置Gateway进程的名称，方便status命令中查看统计
			'name' => 'WebsocketGateway',
			// 设置监听的端口
			'bind_address' => '0.0.0.0:9502',
			// 进程的数量
			'count' => intval(cpu_count() / 2),
			// 内网ip,多服务器分布式部署的时候需要填写真实的内网ip
			'lan_ip' => '127.0.0.1',
			// 监听本机端口的起始端口
			'start_port' => 2300,
			// 心跳间隔
			'ping_interval' => 10,
			// 服务端主动发送心跳
			'ping_not_response_limit' => 0,
			// 心跳数据
			'ping_data' => '{"type":"ping"}',
			// 服务注册地址
			'register_address' => '127.0.0.1:1236',
			// 处理器
			'handler' => [
				//                'use' => 'App\WebSocket\Gateway',
				//                'constructor' => [],
			],
		],

		// 业务进程配置
		'business_worker' => [
			// 设置BusinessWorker进程的名称
			'name' => 'WebsocketBusinessWorker',
			// 设置BusinessWorker进程的数量
			'count' => cpu_count(),
			// 注册服务地址
			'register_address' => '127.0.0.1:1236',
			// 设置使用哪个类来处理业务,业务类至少要实现onMessage静态方法，onConnect和onClose静态方法可以不用实现
			'event_handler' => WebsocketListener::class,
		],

		// 服务注册配置
		'register' => [
			// 设置Gateway进程的名称，方便status命令中查看统计
			'name' => 'WebsocketRegister',
			// 设置监听的端口
			'bind_address' => '0.0.0.0:1236',
		],
	],

	// 其他进程
	'process' => [
		[
			'handler' => [
				'use' => Xin\WorkmanServer\Handlers\HotWatcherHandler::class,
				'constructor' => [
					// Monitor these directories
					'monitorDir' => array_merge(
						[
							base_path('app'),
							base_path('config'),
							base_path('routes'),
							base_path() . '/.env',
							base_path('public') . '/.index.php',
						],
					),
					// Files with these suffixes will be monitored
					'monitorExtensions' => [
						'php', 'html', 'htm', 'env',
					],
					'options' => [
						'enable_file_monitor' => !in_array('-d', $argv ?? []) && DIRECTORY_SEPARATOR === '/',
						'enable_memory_monitor' => DIRECTORY_SEPARATOR === '/',
					],
				],
			],
			'reloadable' => false,
		],
	],
];
